// 定义二叉树的节点类
class TreeNode {
    int val; // 节点的值
    TreeNode left; // 左子节点
    TreeNode right; // 右子节点

    TreeNode(int x) { // 构造函数
        val = x;
    }
}

public class Solution {
    // 统计二叉树中节点的数量
    public int countNodes(TreeNode root) {
        if (root == null) {
            return 0; // 如果节点为空，返回0
        }
        return countNodes(root.left) + countNodes(root.right) + 1; // 递归统计左子树和右子树的节点数，加上当前节点
    }

    public static void main(String[] args) {
        // 创建一个简单的二叉树
        //       1
        //      / \
        //     2   3
        //    / \
        //   4   5
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);

        // 创建 Solution 实例并调用 countNodes 方法
        Solution solution = new Solution();
        int count = solution.countNodes(root);
        System.out.println("二叉树中的节点数量为: " + count); // 输出结果
    }
}